package com.dmz.workflow.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 审批人节点对象
 */
@Data
public class ApprovalNode implements Serializable {

    private static final long serialVersionUID = -5283508978128639930L;

    /**
     * 节点序号
     */
    private Integer id;

    /**
     * 表单key (用于节点绑定表单)
     */
    private String formKey;

    /**
     * 审批人为空时 （0：自动通过 1：自动转交）
     */
    private Integer isEmpty;

    /**
     * 是否多人审批
     */
    private Integer isMultiple;

    /**
     * 本节点id
     */
    private String thisId;

    /**
     * 人员信息
     */
    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
    private List<ExamineGroup> examineGroups;

    /**
     * 活动状态 （1：依次审批，2：会签，3：或签）
     */
    private Integer activity;

    /**
     * 状态：1为指定成员(候选人)，2为发起人自选 4.部门负责人 5.角色  6.矩阵角色
     */
    private Integer status;

    /**
     * 范围 1：全公司，2：指定成员
     */
    private Integer scope;

    /**
     * 是否多选 1：自选一个人，2：自选多个人
     */
    private Integer isCheckbox;

    /**
     * 类型 ： check（审核），duplicate（抄送），term（条件）
     * start(开始) ，event（结束）
     */
    private String type;


    /**
     * 线的对象
     */
    private List<BranchNode> conditions;

    /**
     * 抄送节点是否允许发起人自选 （0：允许 1：不允许）
     */
    private Integer isOptional;

    /**
     * 流程定义id
     */
    private String processDefinitionId;

    /**
     * 特殊字段回显
     */
    private List<Object> expression;

    /**
     * 角色ID
     */
    private Integer roleId;

    /**
     * 表单权限
     */
    private String formPermission;

    /**
     * 审批提醒：1 提醒 0 不提醒
     */
    private Integer approveAlert;

    /**
     * 审批提醒内容
     */
    private String approveAlertContent;

    /**
     * 矩阵主键id
     */
    private Integer matrixId;

    /**
     * 矩阵角色名称
     */
    private String roleName;

    /**
     * 1 一级主管 2 二级主管 3 三级主管 4 四级主管 5 五级主管
     */
    private Integer level;

    /**
     * true 找不到主管时找上级主管
     */
    private Boolean cascade;
}
